home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / tex / td187src.lzh / MTAPPL.D < prev    next >
Text File  |  1991-06-08  |  8KB  |  200 lines

  1. DEFINITION MODULE mtAppl;
  2.  
  3. FROM MagicSys   IMPORT  Byte, ByteSet,
  4.                         sWORD, sINTEGER, sCARDINAL, sBITSET,
  5.                         lWORD, lINTEGER, lCARDINAL, lBITSET;
  6.  
  7.  
  8. (*--------------------------------------------------------------------------*
  9.  *           Auf die folgenden Variablen NUR LESEND ZUGREIFEN!!!            *
  10.  *--------------------------------------------------------------------------*)
  11.  
  12. VAR     ApplIdent:      sINTEGER;  (* Application-ID des Programms       *)
  13.         VDIHandle:      sINTEGER;  (* Nummer der geöffneten Workstation  *)
  14.         MaxWidth:       sINTEGER;  (* Maximale Anzahl Pixel waagerecht   *)
  15.         MaxHeight:      sINTEGER;  (* Maximale Anzahl Pixel senkrecht    *)
  16.         Bitplanes:      sINTEGER;  (* Anzahl der Bitplanes               *)
  17.  
  18.  
  19. PROCEDURE ApplInit;
  20. (* Meldet die Applikation beim AES an, öffnet VDI-Workstation mit Handle
  21.  * VDIHandle (siehe oben).  Wird im Modulkörper ausgeführt und braucht
  22.  * nicht weiter beachtet zu werden!
  23.  *)
  24.  
  25. PROCEDURE InstallTermproc (proc: PROC);
  26. (* Installiert eine Prozedur, welche bei Aufruf von ApplTerm automatisch
  27.  * abgearbeitet wird.  So können Systemresourcen auf einfache Art frei-
  28.  * gegeben werden.
  29.  *)
  30.  
  31. PROCEDURE ApplTerm (return: sINTEGER);
  32. (* gibt alle benutzten Workstations frei und meldet die Applikation beim
  33.  * AES wieder ab.  Gibt den Wert return an das aufrufende Programm zurück.
  34.  *)
  35.  
  36. PROCEDURE ApplPath (VAR path: ARRAY OF CHAR);
  37. (* liefert den Pfad, von dem das Programm gestartet wurde *)
  38.  
  39. PROCEDURE OpenWorkstation (): sINTEGER;
  40. (* Öffnet eine virtuelle Workstation, mit allem Pipapo, returniert Handle.
  41.  * Jede über diese Funktion geöffnete Workstation muß mit CloseWorkstation
  42.  * wieder geschlossen werden.  Ein Aufruf von ApplTerm erledigt dies auch
  43.  * sehr elegant.
  44.  *)
  45.  
  46. PROCEDURE CloseWorkstation (handle: sINTEGER);
  47. (* Schließt eine Workstation *)
  48.  
  49.  
  50. (*--------------------------------------------------------------------------*
  51.  *                              Maus-Handling                               *
  52.  *--------------------------------------------------------------------------*
  53.  *                                                                          *
  54.  * GEM hat im allgemeinen etwas Probleme mit der Maus.  Deshalb ist es      *
  55.  * sinnvoll, die Maus zentral über ein Modul zu steuern.                    *
  56.  *                                                                          *
  57.  *--------------------------------------------------------------------------*)
  58.  
  59. PROCEDURE MouseOn;
  60. PROCEDURE MouseArrow;
  61. PROCEDURE MouseCursor;
  62. PROCEDURE MouseBusy;
  63. PROCEDURE MouseFinger;
  64. PROCEDURE MouseHand;
  65. PROCEDURE MouseThincross;
  66. PROCEDURE MouseThickcross;
  67. PROCEDURE MouseOutline;
  68. PROCEDURE MouseUser;
  69. (* Diese Routinen schalten die Maus mit dem jeweilige Bild EIN *)
  70.  
  71. PROCEDURE MouseOff;
  72. (* Schaltet die Maus AUS *)
  73.  
  74.  
  75. TYPE MFORM =    RECORD
  76.                  mfXhot:        sINTEGER;
  77.                  mfYhot:        sINTEGER;
  78.                  mfNplanes:     sINTEGER;
  79.                  mfFg:          sINTEGER;
  80.                  mfBg:          sINTEGER;
  81.                  mfMask:        ARRAY [0..15] OF sCARDINAL;
  82.                  mfData:        ARRAY [0..15] OF sCARDINAL;
  83.                 END;
  84.  
  85. PROCEDURE UserMouse (VAR form: MFORM);
  86. (* Setzt eine User-Definierte Maus. Sichtbar erst mit MouseUser! *)
  87.  
  88.  
  89. (*--------------------------------------------------------------------------*
  90.  *                         GEM-Bildschirm-Font-Handling                     *
  91.  *--------------------------------------------------------------------------*
  92.  *                                                                          *
  93.  * Das Fonthandling läuft unabhängig von den Font-Id's.  Ein Font ist eine  *
  94.  * Nummer im Bereich SystemFont..FontNumber().                              *
  95.  *                                                                          *
  96.  * Die Größe der Fonts wird in POINTs berechnet.                            *
  97.  *                                                                          *
  98.  * Die Prozeduren SelectFont und ScaleFont benötigen ein vorhergehendes     *
  99.  * LoadFonts ansonsten wird der Systemzeichensatz benutzt.                  *
  100.  *                                                                          *
  101.  * Bei den Prozeduren FontCode, Monospaced, und FontInfo werden bei nicht   *
  102.  * ausgeführtem LoadFonts die Werte des Systemzeichensatzes retuniert.      *
  103.  *                                                                          *
  104.  * FontNumber liefert ohne LoadFonts 1, da ja ein Zeichensatz verfügbar     *
  105.  * ist: Der Systemfont.                                                     *
  106.  *                                                                          *
  107.  * LoadFonts stellt bei allen nachgeladenen Fonts die Minimum-Größe ein.    *
  108.  * Ausnahme ist der Systemfont, bei dem die der jeweiligen Auflösung ent-   *
  109.  * sprechende Größe benutzt wird.                                           * 
  110.  *                                                                          *
  111.  *--------------------------------------------------------------------------*)
  112.  
  113. CONST   SystemFont =    1;
  114.  
  115.  
  116. PROCEDURE VqGdos (): BOOLEAN;
  117. (* TRUE, wenn ein GDOS geladen ist *)
  118.  
  119.  
  120. PROCEDURE LoadFonts (handle: sINTEGER): sINTEGER;
  121. (* Lädt GEM-Fonts, wenn möglich. Dazu muß natürlich ein GDOS präsent sein.
  122.  * Liefert Errorcode:
  123.  *
  124.  *  0   = Erfolgreich
  125.  * -1   = Kein GDOS
  126.  * -2   = Keine Fonts geladen
  127.  * -3   = Kein Speicher für Verwaltung
  128.  * -4   = Ungültiges VDI-Handle
  129.  *)
  130.  
  131. PROCEDURE FreeFonts (handle: sINTEGER);
  132. (* Gibt den benutzten Speicher wieder frei. Wird auch bei ApplTerminate
  133.  * ausgeführt und braucht somit nicht weiter beachtet zu werden.
  134.  *)
  135.  
  136. PROCEDURE FontNumber(): sINTEGER;
  137. (* Anzahl der zur Verfügung stehenden Fonts *)
  138.  
  139. PROCEDURE FontCode (id: sINTEGER): sINTEGER;
  140. (* Ermittelt anhand des Font-Id die modulinterne Fontnummer *)
  141.  
  142. PROCEDURE SelectFont (handle, font: sINTEGER; VAR size: sINTEGER);
  143. (* Selektion eines Fonts. *)
  144.  
  145. PROCEDURE ScaleFont (handle, size: sINTEGER; VAR width, height: sINTEGER): sINTEGER;
  146. (* Bestimmung der Größe des aktuellen Fonts. *)
  147.  
  148. PROCEDURE Monospaced (font: sINTEGER): BOOLEAN;
  149. (* TRUE, wenn nicht proportional *)
  150.  
  151. PROCEDURE PossibleSize (font: sINTEGER; VAR sizearray: ARRAY OF sINTEGER);
  152. (* füllt den ARRAY mit allen möglichen Größen des Fonts. Ein Element mit
  153.  * Wert 0 schließt die Liste ab.  Der Größte Wert steht als erstes in der
  154.  * Liste, anschließend, der nächst kleinere usw.
  155.  * Anmerkung: Intern werden max. 30 verschiedene Größen je Font gespeichert.
  156.  *)
  157.  
  158. PROCEDURE FontInfo (handle, font: sINTEGER; VAR name: ARRAY OF CHAR;
  159.                     VAR id, size, min, max: sINTEGER);
  160. (* Info über den Font:
  161.  *
  162.  * name =       Name des Fonts
  163.  * id =         GDOS-Font ID
  164.  * size =       aktuelle Größe, wenn über ScaleFont eingestellt, sonst -1
  165.  * min =        Minimale Größe in Points
  166.  * max =        Maximale Größe in Points
  167.  *)
  168.  
  169.  
  170. (*-------------------------------------------------------------------------*
  171.  *             Vorgefertigte Alertmessages, KEINE MAGICALERTS!             *
  172.  *-------------------------------------------------------------------------*)
  173.  
  174. PROCEDURE Message (m: ARRAY OF CHAR);
  175. (* Gibt Alertbox aus *)
  176.  
  177. CONST   YES =    1;
  178.         NO =     2;
  179.         CANCEL = 3;
  180.  
  181. PROCEDURE Question (default: sCARDINAL; m: ARRAY OF CHAR): BOOLEAN;
  182. (* Alertbox mit JA/NEIN-Entscheidung, TRUE wenn default gewählt *)
  183.  
  184. PROCEDURE Select (default: sCARDINAL; m: ARRAY OF CHAR): sCARDINAL;
  185. (* Alertbox mit 3 Entscheidungen: JA/NEIN/ABBRUCH *)
  186.  
  187.  
  188. (*-------------------------------------------------------------------------*
  189.  *                        Auswerten der Commandline                        *
  190.  *-------------------------------------------------------------------------*)
  191.  
  192. PROCEDURE ParamCount (): sINTEGER;
  193. (* Anzahl der Parameter in der Kommandozeile, -1 wenn keine Parameter *)
  194.  
  195. PROCEDURE ParamString (n: sINTEGER; VAR arg: ARRAY OF CHAR);
  196. (* liefert das n'te Argumen